using System;
using Microsoft.SPOT;

namespace Gadgeteer.Interfaces.Graphics
{
    /// <summary>
    /// Interface for character displays.
    /// </summary>
    public interface ICharacterDisplay
    {
        /// <summary>
        /// Clears the screen.
        /// </summary>
        void Clear();
        
        /// <summary>
        /// Places the cursor at the top left of the screen.
        /// </summary>
        void CursorHome();

        /// <summary>
        /// Prints the passed in string to the screen at the current cursor position.
        /// </summary>
        /// <param name="text">The string to print.</param>
        /// <remarks>This function will move the cursor position after.</remarks>
        void PrintString(string text);

        /// <summary>
        /// Sends an ASCII character to the LCD at the current cursor position. Note:
        /// This function will move the cursor position after.
        /// </summary>
        /// <param name="c"> The character to display.</param>
        void Putc(byte c);

        /// <summary>
        /// Sets the module's backlight to the passed in value.
        /// </summary>
        /// <param name="mode"></param>
        void SetBacklight(BackLightMode mode);

        /// <summary>
        /// Set the cursor to the passed in position.
        /// </summary>
        /// <param name="row">Row of the desired cursor position.</param>
        /// <param name="col">Column of the desired cursor position.</param>
        void SetCursor(byte row, byte col);
    }
}
